# 4. kubectl命令行管理工具
# kubectl命令行管理工具
# kubectl项目发布最常用的命令
就从最简单的创建项目,发布项目,更新项目,回滚项目,删除项目
# 创建项目
kubectl run nginx --replicas=3 --image=nginx:1.14 --port=80
## 创建的项目名为:nginx
## 节点为:3个
## 镜像为:nginx1.14版本镜像
## 内部端口为:80
kubectl get deploy,pods
## deploy:查看所有项目有几个节点
## pods:查看所有节点
# 发布项目
kubectl expose deployment nginx --port=88 --type=NodePort --target-port=80 --name=nginx-service
## 暴露端口
## 容器内部端口:80
## 集群数据互通端口:88
## 服务类型:NodePort
kubectl get service
## 查看所有类型的大概信息
# 更新项目
kubectl set image deployment/nginx nginx=nginx:1.15
## 把nginx版本更新为1.15
# 回滚项目
kubectl rollout history deployment/nginx
kubectl rollout undo deployment/nginx
# 删除项目
kubectl delete deploy/nginx
kubectl delete svc/nginx-service
# kubectl常用命令
# 查看类命令
# 获取节点相应服务的信息
kubectl get nodes
# 获取pod的相关信息
kubectl get pods
# selector名来查找
如果需要按selector名来查找相应的pod信息, 可以通过以下命令查看
kubectl get pod --selector name=tomcat
# 查看K8S集群信息
kubectl cluster-info
## 查看完整信息
kubectl cluster-info dump
# 查看各组件信息
kubectl -s http://localhost:8080 get componentstatuses
kubectl get cs
# 查看pods(容器)所在的运行节点
kubectl get pods -o wide
# 通过某个命名空间查找节点信息
如果需要通过某个命名空间查找节点信息, 可以通过以下命令查看:
kubectl get pods -o wide -n kube-system
-o wide 选项表示展示更多的Pod节点信息
-n <命名空间> 表示查询该命名空间下的Pod节点信息
# 找所有命名空间的节点信息
如果需要查找所有命名空间下的所有Pod信息, 可以通过以下命令:
kubectl get pods --all-namespaces
或
kubectl get pods -o wide --all-namespaces #列出更多的详细信息
# 查看pods定义的详细信息
kubectl get pods -o yaml
# 查看运行的pod的环境变量
kubectl exec <pod名称> env
kubectl exec nginx-5c7588df-45gzq env
# 查看指定pod的日志
kubectl logs -f pods/<pod名称> -n kube-system
# 查看集群节点信息
kubectl get nodes
kubectl get node
# 集群名称为zone下的集群节点信息
如果需要查看集群名称为zone下的集群节点信息, 可以使用以下命令
kubectl get nodes -l zone
# 查看某个命名空间下的所有service
查看某个命名空间(如kube-system)下的所有service
kubectl get services kubernetes-dashboard -n kube-system
# 查看某个命名空间下的所有发布信息
查看某个命名空间(如kube-system)下的所有发布信息
kubectl get deployment kubernetes-dashboard -n kube-system
# 查看资源信息
# 根据service名查看资源信息
kubectl describe service/kubernetes-dashboard --namespace="kube-system"
# 根据pod名称查看资源信息
kubectl describe pods/kubernetes-dashboard-349859023-g6q8c --namespace="kube-system"
kubectl describe pod nginx-772ai
# 操作类命令
# 创建资源
kubectl create -f <文件名.yaml>
# 重建资源
kubectl replace -f <文件名 [--force]
# 删除资源
# 强制删除某个文件名命名节点
kubectl delete -f <文件名>
# 删除某个Pod命令节点
kubectl delete pod <pod名>
# 删除某Replication Controller命名节点
kubectl delete rc <rc名>
# 删除某个服务命名节点
kubectl delete service <service名>
# 删除所有Pod节点
kubectl delete pod --all
# 动态伸缩操作
# 为某个名称为nginx动态扩展5个服务节点
为Replcation Controller名称为nginx动态扩展5个服务节点
kubectl scale rc nginx --replicas=5
# 为redis-slave部署5个服务节点
kubectl scale deployment redis-slave --replicas=5
# 为某个.yaml部署脚本的服务扩展2个节点
为redis-slave-deployment.yaml部署脚本下的服务扩展2个节点
kubectl scale --replicas=2 -f redis-slave-deployment.yaml
# 进入Pod节点容器内进行操作
kubectl exec -it redis-master-1033017107-q47hh /bin/bash
# Pods节点容器标签操作
# 增加Node节点label值
kubectl label nodes node1 zone=north
# 增加Pod的label值 [key]=[value]
kubectl label pod redis-master-1033017107-q47hh role=master
# 删除Pod的label值
kubectl label pod redis-master-1033017107-q47hh role-
# 修改Pod的label值
kubectl label pod redis-master-1033017107-q47hh role=backend --overwrite
# 滚动升级
# 配置文件滚动升级
kubectl rolling-update redis-master -f redis-master-controller-v2.yaml
# 命令升级
kubectl rolling-update redis-master --image=redis-master:2.0
# Pods版本回滚
kubectl rolling-update redis-master --image=redis-master:1.0 --rollback